// vue中创建全局关键词require
// import { createRequire } from 'module'
// const require = createRequire(import.meta.url)
import { app, BrowserWindow } from 'electron'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { dirname } from 'node:path'

const __dirname = dirname(fileURLToPath(import.meta.url))

const createWindow = () => {
    const win = new BrowserWindow({
        width: 1280,
        height: 800,
        webPreferences: {
            // preload: path.join(__dirname, '../preload.cjs')
            // contextIsolation: false, // 上下文隔离，推荐开启
            nodeIntegration: true, // node.js 集成开启，推荐禁用
            nodeIntegrationInWorker: true, // node.js 集成
            webSecurity: true, // 强烈建议强制开启，因为禁用 webSecurity 将会禁止同源策略并且将 allowRunningInsecureContent 属性置 true。 换句话说，这将使得来自其他站点的非安全代码被执行。
            // allowRunningInsecureContent: true, // 允许网站在HTTPS中加载或执行非安全源(HTTP) 中的脚本代码、CSS或插件，Electron 默认是禁止这种执行，建议不要开启。
            // experimentalFeatures: true, // Electron 的熟练用户可以通过 experimentalFeatures 属性来启用 Chromium 实验性功能。Electron 不推荐开启，除非你知道你自己在干什么，否则你不应该开启这个属性。
            // experimentalFeatures: false // 实验性功能，默认关闭。Electron 的熟练用户可以通过 experimentalFeatures 属性来启用 Chromium 实验性功能。
            csp: "default-src 'self'; script-src 'self' https://trustedscripts.example.com; object-src 'none'" // content security police 内容安全策略，现在跨域请求。
        }
    })
    // 当前窗口加载的本地页面
    // win.loadFile('electron/index.html')
    // 当前窗口加载的网上页面
    win.loadURL('http://localhost:5173/')
    // 开启当前窗口的开发者工具
    win.webContents.openDevTools()
    // __dirname 字符串指向当前正在执行脚本的路径 (在本例中，它指向你的项目的根文件夹)。
    // path.join API 将多个路径联结在一起，创建一个跨平台的路径字符串。
}
app.whenReady().then(() => {
    createWindow()
    // macos(darwin)系统关闭全部窗口后新建窗口
    app.on('activate', () => {
      if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})

// windows、linux系统关闭全部窗口后退出应用
app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') app.quit()
  })
